home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-04-03 | 9.6 KB | 268 lines | [TEXT/PJMM] |
- { This file has been processed by The THINK Pascal Source Converter, v1.1. }
-
- {
- Created: Tuesday, January 8, 1991 at 10:53 AM
- MIDI.p
- Pascal Interface to the Macintosh Libraries
-
- Copyright © 1988-1990, Apple Computer, Inc.
- All Rights Reserved
- }
-
-
- {$IFC UNDEFINED UsingIncludes}
- {$SETC UsingIncludes := 0}
- {$ENDC}
-
-
- UNIT MIDI;
- INTERFACE USES Types;
-
-
-
-
-
-
-
-
-
-
-
-
-
- CONST
- midiToolNum = 4; {tool number of MIDI Manager for SndDispVersion call}
- midiMaxNameLen = 31; {maximum number of characters in port and client names}
-
- { Time formats }
- midiFormatMSec = 0; {milliseconds}
- midiFormatBeats = 1; {beats}
- midiFormat24fpsBit = 2; {24 frames/sec.}
- midiFormat25fpsBit = 3; {25 frames/sec.}
- midiFormat30fpsDBit = 4; {30 frames/sec. drop-frame}
- midiFormat30fpsBit = 5; {30 frames/sec.}
- midiFormat24fpsQF = 6; {24 frames/sec. longInt format }
- midiFormat25fpsQF = 7; {25 frames/sec. longInt format }
- midiFormat30fpsDQF = 8; {30 frames/sec. drop-frame longInt format }
- midiFormat30fpsQF = 9; {30 frames/sec. longInt format }
- midiInternalSync = 0; {internal sync}
- midiExternalSync = 1; {external sync}
-
- { Port types}
- midiPortTypeTime = 0; {time port}
- midiPortTypeInput = 1; {input port}
- midiPortTypeOutput = 2; {output port}
- midiPortTypeTimeInv = 3; {invisible time port}
-
- { OffsetTimes }
- midiGetEverything = $7FFFFFFF; {get all packets, regardless of time stamps}
- midiGetNothing = $80000000; {get no packets, regardless of time stamps}
- midiGetCurrent = $00000000; {get current packets only}
-
- { MIDI data and messages are passed in MIDIPacket records (see below).
- The first byte of every MIDIPacket contains a set of flags
-
- bits 0-1 00 = new MIDIPacket, not continued
- 01 = begining of continued MIDIPacket
- 10 = end of continued MIDIPacket
- 11 = continuation
- bits 2-3 reserved
-
- bits 4-6 000 = packet contains MIDI data
-
- 001 = packet contains MIDI Manager message
-
- bit 7 0 = MIDIPacket has valid stamp
- 1 = stamp with current clock}
- midiContMask = $03;
- midiNoCont = $00;
- midiStartCont = $01;
- midiMidCont = $03;
- midiEndCont = $02;
- midiTypeMask = $70;
- midiMsgType = $00;
- midiMgrType = $10;
- midiTimeStampMask = $80;
- midiTimeStampCurrent = $80;
- midiTimeStampValid = $00;
-
- { MIDI Manager MIDIPacket command words (the first word in the data field
- for midiMgrType messages)}
- midiOverflowErr = $0001;
- midiSCCErr = $0002;
- midiPacketErr = $0003;
- midiMaxErr = $00FF; {all command words less than this value are error indicators}
-
- { Valid results to be returned by readHooks }
- midiKeepPacket = 0;
- midiMorePacket = 1;
- midiNoMorePacket = 2;
-
- { Errors: }
- midiNoClientErr = -250; {no client with that ID found}
- midiNoPortErr = -251; {no port with that ID found}
- midiTooManyPortsErr = -252; {too many ports already installed in the system}
- midiTooManyConsErr = -253; {too many connections made}
- midiVConnectErr = -254; {pending virtual connection created}
- midiVConnectMade = -255; {pending virtual connection resolved}
- midiVConnectRmvd = -256; {pending virtual connection removed}
- midiNoConErr = -257; {no connection exists between specified ports}
- midiWriteErr = -258; {MIDIWritePacket couldn't write to all connected ports}
- midiNameLenErr = -259; {name supplied is longer than 31 characters}
- midiDupIDErr = -260; {duplicate client ID}
- midiInvalidCmdErr = -261; {command not supported for port type}
-
- { Driver calls: }
- midiOpenDriver = 1;
- midiCloseDriver = 2;
-
- TYPE
- MIDIPacketPtr = ^MIDIPacket;
- MIDIPacket = PACKED RECORD
- flags: Byte;
- len: Byte;
- tStamp: LONGINT;
- data: PACKED ARRAY [0..248] OF Byte;
- END;
-
- MIDIClkInfo = RECORD
- sync: INTEGER; {synchronization external/internal}
- curTime: LONGINT; {current value of port's clock}
- format: INTEGER; {time code format}
- END;
-
- MIDIIDRec = RECORD
- clientID: OSType;
- portID: OSType;
- END;
-
- MIDIPortInfoPtr = ^MIDIPortInfo;
- MIDIPortInfoHdl = ^MIDIPortInfoPtr;
- MIDIPortInfo = RECORD
- portType: INTEGER; {type of port}
- timeBase: MIDIIDRec; {MIDIIDRec for time base}
- numConnects: INTEGER; {number of connections}
- cList: ARRAY [1..100] OF MIDIIDRec;
- END;
-
- MIDIPortParamsPtr = ^MIDIPortParams;
- MIDIPortParams = RECORD
- portID: OSType; {ID of port, unique within client}
- portType: INTEGER; {Type of port - input, output, time, etc.}
- timeBase: INTEGER; {refnum of time base, 0 if none}
- offsetTime: LONGINT; {offset for current time stamps}
- readHook: Ptr; {routine to call when input data is valid}
- refCon: LONGINT; {refcon for port (for client use)}
- initClock: MIDIClkInfo; {initial settings for a time base}
- name: Str255; {name of the port, This is a real live string, not a ptr.}
- END;
-
- MIDIIDListPtr = ^MIDIIDList;
- MIDIIDListHdl = ^MIDIIDListPtr;
- MIDIIDList = RECORD
- numIDs: INTEGER;
- list: ARRAY [1..100] OF OSType;
- END;
-
-
- {
- Prototype Declarations for readHook and timeProc
-
- FUNCTION myReadHook(myPacket: MIDIPacketPtr; myRefCon: LONGINT) : INTEGER;
- PROCEDURE myTimeProc(curTime: LONGINT; myRefCon: LONGINT);
- }
-
- FUNCTION SndDispVersion(toolnum: INTEGER): LONGINT;
- FUNCTION MIDISignIn(clientID: OSType;refCon: LONGINT;icon: Handle;name: Str255): OSErr;
- INLINE $203C,$0004,midiToolNum,$A800;
- PROCEDURE MIDISignOut(clientID: OSType);
- INLINE $203C,$0008,midiToolNum,$A800;
- FUNCTION MIDIGetClients: MIDIIDListHdl;
- INLINE $203C,$000C,midiToolNum,$A800;
- PROCEDURE MIDIGetClientName(clientID: OSType;VAR name: Str255);
- INLINE $203C,$0010,midiToolNum,$A800;
- PROCEDURE MIDISetClientName(clientID: OSType;name: Str255);
- INLINE $203C,$0014,midiToolNum,$A800;
- FUNCTION MIDIGetPorts(clientID: OSType): MIDIIDListHdl;
- INLINE $203C,$0018,midiToolNum,$A800;
- FUNCTION MIDIAddPort(clientID: OSType;BufSize: INTEGER;VAR refnum: INTEGER;
- init: MIDIPortParamsPtr): OSErr;
- INLINE $203C,$001C,midiToolNum,$A800;
- FUNCTION MIDIGetPortInfo(clientID: OSType;portID: OSType): MIDIPortInfoHdl;
- INLINE $203C,$0020,midiToolNum,$A800;
- FUNCTION MIDIConnectData(srcClID: OSType;srcPortID: OSType;dstClID: OSType;
- dstPortID: OSType): OSErr;
- INLINE $203C,$0024,midiToolNum,$A800;
- FUNCTION MIDIUnConnectData(srcClID: OSType;srcPortID: OSType;dstClID: OSType;
- dstPortID: OSType): OSErr;
- INLINE $203C,$0028,midiToolNum,$A800;
- FUNCTION MIDIConnectTime(srcClID: OSType;srcPortID: OSType;dstClID: OSType;
- dstPortID: OSType): OSErr;
- INLINE $203C,$002C,midiToolNum,$A800;
- FUNCTION MIDIUnConnectTime(srcClID: OSType;srcPortID: OSType;dstClID: OSType;
- dstPortID: OSType): OSErr;
- INLINE $203C,$0030,midiToolNum,$A800;
- PROCEDURE MIDIFlush(refnum: INTEGER);
- INLINE $203C,$0034,midiToolNum,$A800;
- FUNCTION MIDIGetReadHook(refnum: INTEGER): ProcPtr;
- INLINE $203C,$0038,midiToolNum,$A800;
- PROCEDURE MIDISetReadHook(refnum: INTEGER;hook: ProcPtr);
- INLINE $203C,$003C,midiToolNum,$A800;
- PROCEDURE MIDIGetPortName(clientID: OSType;portID: OSType;VAR name: Str255);
- INLINE $203C,$0040,midiToolNum,$A800;
- PROCEDURE MIDISetPortName(clientID: OSType;portID: OSType;name: Str255);
- INLINE $203C,$0044,midiToolNum,$A800;
- PROCEDURE MIDIWakeUp(refnum: INTEGER;time: LONGINT;period: LONGINT;timeProc: ProcPtr);
- INLINE $203C,$0048,midiToolNum,$A800;
- PROCEDURE MIDIRemovePort(refnum: INTEGER);
- INLINE $203C,$004C,midiToolNum,$A800;
- FUNCTION MIDIGetSync(refnum: INTEGER): INTEGER;
- INLINE $203C,$0050,midiToolNum,$A800;
- PROCEDURE MIDISetSync(refnum: INTEGER;sync: INTEGER);
- INLINE $203C,$0054,midiToolNum,$A800;
- FUNCTION MIDIGetCurTime(refnum: INTEGER): LONGINT;
- INLINE $203C,$0058,midiToolNum,$A800;
- PROCEDURE MIDISetCurTime(refnum: INTEGER;time: LONGINT);
- INLINE $203C,$005C,midiToolNum,$A800;
- PROCEDURE MIDIStartTime(refnum: INTEGER);
- INLINE $203C,$0060,midiToolNum,$A800;
- PROCEDURE MIDIStopTime(refnum: INTEGER);
- INLINE $203C,$0064,midiToolNum,$A800;
- PROCEDURE MIDIPoll(refnum: INTEGER;offsetTime: LONGINT);
- INLINE $203C,$0068,midiToolNum,$A800;
- FUNCTION MIDIWritePacket(refnum: INTEGER;packet: MIDIPacketPtr): OSErr;
- INLINE $203C,$006C,midiToolNum,$A800;
- FUNCTION MIDIWorldChanged(clientID: OSType): BOOLEAN;
- INLINE $203C,$0070,midiToolNum,$A800;
- FUNCTION MIDIGetOffsetTime(refnum: INTEGER): LONGINT;
- INLINE $203C,$0074,midiToolNum,$A800;
- PROCEDURE MIDISetOffsetTime(refnum: INTEGER;offsetTime: LONGINT);
- INLINE $203C,$0078,midiToolNum,$A800;
- FUNCTION MIDIConvertTime(srcFormat: INTEGER;dstFormat: INTEGER;time: LONGINT): LONGINT;
- INLINE $203C,$007C,midiToolNum,$A800;
- FUNCTION MIDIGetRefCon(refnum: INTEGER): LONGINT;
- INLINE $203C,$0080,midiToolNum,$A800;
- PROCEDURE MIDISetRefCon(refnum: INTEGER;refCon: LONGINT);
- INLINE $203C,$0084,midiToolNum,$A800;
- FUNCTION MIDIGetClRefCon(clientID: OSType): LONGINT;
- INLINE $203C,$0088,midiToolNum,$A800;
- PROCEDURE MIDISetClRefCon(clientID: OSType;refCon: LONGINT);
- INLINE $203C,$008C,midiToolNum,$A800;
- FUNCTION MIDIGetTCFormat(refnum: INTEGER): INTEGER;
- INLINE $203C,$0090,midiToolNum,$A800;
- PROCEDURE MIDISetTCFormat(refnum: INTEGER;format: INTEGER);
- INLINE $203C,$0094,midiToolNum,$A800;
- PROCEDURE MIDISetRunRate(refnum: INTEGER;rate: INTEGER;time: LONGINT);
- INLINE $203C,$0098,midiToolNum,$A800;
- FUNCTION MIDIGetClientIcon(clientID: OSType): Handle;
- INLINE $203C,$009C,midiToolNum,$A800;
-
-
- { UsingMIDI }
-
-
- IMPLEMENTATION
- END.
-
-
-